Skip to content

perf: add performance benchmark test suite#7

Merged
CalWade merged 2 commits into
mainfrom
feature/benchmark
Mar 31, 2026
Merged

perf: add performance benchmark test suite#7
CalWade merged 2 commits into
mainfrom
feature/benchmark

Conversation

@CalWade
Copy link
Copy Markdown
Owner

@CalWade CalWade commented Mar 31, 2026

概述

建立组件性能基准测试体系,用数据证明 VirtualList 和 Tree 在大数据量下的性能表现。

Commit 说明

Commit 内容
perf(benchmark): add algorithm-level performance tests 7 个 vitest 算法性能测试,CI 可跑
perf(benchmark): add browser benchmark page HTML 页面,浏览器打开测 FPS
docs(benchmark): add performance benchmark guide 文档 + 侧边栏

算法层测试结果(vitest)

测试项 数据量 阈值 状态
getTotalHeight 100K < 50ms
findStartIndex 二分查找 100K < 100ms
10 次连续查找 100K < 200ms
固定高度 1000 次查找 100K < 1ms
Tree 扁平化全展开 1K < 10ms
Tree 扁平化全展开 10K < 50ms
Tree 扁平化 30% 展开 10K < 20ms

浏览器 FPS 测试

打开 benchmark/index.html,可测试:

  • VirtualList 固定高度 100K 项 → 自动滚动 5 秒,记录平均/最低 FPS
  • VirtualList 动态高度 100K 项 → 同上
  • Tree 展开 1000+ 节点耗时
  • 核心算法执行时间

测试

Tests  118 passed (118)

CalWade added 2 commits March 31, 2026 13:37
- VirtualList: fixed/dynamic mode benchmarks (100K & 10K items)
- Tree: flatten benchmarks (1K & 10K nodes, various expand ratios)
- Browser benchmark page with FPS monitor and auto-scroll tests
- Run via 'pnpm bench' — outputs ops/sec, no pass/fail assertions
- Benchmark files excluded from 'pnpm test' (CI unaffected)
- Document 'pnpm bench' usage and browser FPS test
- Include benchmark data table from actual run
- Explain performance design: O(1) fixed, O(log n) dynamic
- Register benchmark page in VitePress sidebar
@CalWade CalWade force-pushed the feature/benchmark branch from e812a86 to 646c958 Compare March 31, 2026 05:38
@CalWade CalWade merged commit bd473c9 into main Mar 31, 2026
3 checks passed
CalWade added a commit that referenced this pull request May 9, 2026
perf: add performance benchmark test suite
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant